package de.fhin.mas.ontology;

import jade.content.Concept;

/**
 * Diese Klasse definiert alle notwendigen Eigenschaften eines Suchobjekts,
 * damit das Agentensystem in der Lage ist, dieses Objekt zu finden.<br>
 * Sie implementiert das <tt>Concept</tt> Interface, damit die Struktur dieser
 * Klasse in der <tt>MASOntology</tt> korrekt abgebildet und interpretiert
 * werden kann.
 * 
 * @author Thomas Schlaefer
 * 
 */
public class SearchableObject implements Concept {

	/**
	 * 
	 */
	private static final long serialVersionUID = 3968400967471307604L;

	private String name;
	private int height;
	private int width;
	private int depth;

	/*
	 * TODO tsc: Color und Shape sind keine primitiven Datentypen. Solange nicht
	 * klar ist wie man sowas in der Ontologie einbaut, bleiben die Attribute
	 * erstmal aussen vor.
	 */

	// private Color color;
	// private Shape shape;
	// beides hier mal übergangsweise als primitive Strings realisiert, bis eine
	// Lösung für obengenanntes Problem gefunden wurde
	private String color;
	private String shape;

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setHeight(int height) {
		this.height = height;
	}

	public int getHeight() {
		return height;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getWidth() {
		return width;
	}

	public void setDepth(int depth) {
		this.depth = depth;
	}

	public int getDepth() {
		return depth;
	}

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public String getShape() {
		return shape;
	}

	public void setShape(String shape) {
		this.shape = shape;
	}

	public SearchableObject() {

	}

	/**
	 * Erzeugt ein neues Suchobjekt
	 * 
	 * @param name
	 *            Objektname
	 * @param color
	 *            Farbe (RGB Wert)
	 * @param shape
	 *            Form
	 * @param height
	 *            Höhe in Millimetern
	 * @param width
	 *            Breite in Millimetern
	 * @param depth
	 *            Tiefe in Millimetern
	 */
	public SearchableObject(String name, String color, String shape, int height, int width, int depth) {
		this.name = name;
		this.color = color;
		this.shape = shape;
		this.height = height;
		this.width = width;
		this.depth = depth;
	}

	/**
	 * Für Menschen verständlichen String liefern, damit wir uns etwas Code bei
	 * Debug-Ausgaben und bei der GUI sparen.
	 * 
	 * @author Ast
	 */
	@Override
	public String toString() {
		return String.format("%s (%s)", getName(), getColor());
	}

}
